定期ミートアップ 第77回
前回:定期ミートアップ 第76回
https://github.com/shiika-lang/shiika/pull/595
ジェネリクスの実装を取り戻し中
ほとんどの部分はskc_ast2hirでやるので修正不要
そうでないもの:type object
code:sk
p 1.class #=> #<class Int>
puts 1.class.name #=> Int
p 1,2,3.class #=> #<class Array<Int>>
最近はまったこと
puts "Hello"がnullエラーになる
https://github.com/shiika-lang/shiika/commit/d0b75027af0268e969a707d506b1dd05d49f8e6c
code:ll
define ptr @_chiika_main_2(ptr %"$env", i64 %"$async_result") {
%result = tail call i64 @chiika_env_ref(ptr %"$env", i64 1, i64 6)
%recover_i64_to_ptr = inttoptr i64 %result to ptr
%addr_vtable = getelementptr inbounds %Object, ptr %recover_i64_to_ptr, i32 0, i32 0
%load_vtable = load ptr, ptr %addr_vtable, align 8
%vtable = load 3 x ptr, ptr %load_vtable, align 8
// テーブルの2番目の関数ポインタをとる
%func_raw = extractvalue 3 x ptr %vtable, 2
%result1 = tail call i64 @chiika_env_ref(ptr %"$env", i64 1, i64 6)
%recover_i64_to_ptr2 = inttoptr i64 %result1 to ptr
%"::String" = load ptr, ptr @"::String", align 8
%string_new_result = tail call ptr @Meta_String_new(ptr %"::String", ptr @shiika_str0, i64 5)
// 関数ポインタを実行
%result3 = tail call ptr %func_raw(ptr %"$env", ptr %recover_i64_to_ptr2, ptr %string_new_result, ptr @_chiika_main_3)
ret ptr %result3
}